package com.ly.algorithm.leetcode.linked;

import com.ly.base.reflect.P;

/**
 * @Classname Problem24
 * @Description
 * 给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
 *
 * 你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。
 *
 *
 * 示例 1.txt：
 *
 *
 * 输入：head = [1.txt,2,3,4]
 * 输出：[2,1.txt,4,3]
 * 示例 2：
 *
 * 输入：head = []
 * 输出：[]
 * 示例 3：
 *
 * 输入：head = [1.txt]
 * 输出：[1.txt]
 *
 * @Date 2020/10/13 16:55
 * @Author 冷心影翼
 */
public class Problem24 {

	public static void main(String[] args) {
		Solution24 solution24 = new Solution24();
		ListNode listNode = new ListNode(1);
		 listNode.next = new ListNode(2);
		 listNode.next.next = new ListNode(3);
		 listNode.next.next.next = new ListNode(4);
		 listNode.next.next.next.next = new ListNode(5);
		ListNode listNode1 = solution24.swapPairs(listNode);
		listNode1.printRes();
	}
}


class Solution24 {
	public ListNode swapPairs(ListNode head) {
		ListNode dummyHead = new ListNode(0);
		dummyHead.next = head;
		ListNode temp = dummyHead;
		while (temp.next != null && temp.next.next != null) {
			ListNode node1 = temp.next;
			ListNode node2 = temp.next.next;
			temp.next = node2;
			node1.next = node2.next;
			node2.next = node1;
			temp = node1;
		}
		return dummyHead.next;
	}



}